#ifndef CAPINFO_H
#define CAPINFO_H

#include <QFile>
#include <QFileInfo>
#include <QDateTime>
#include "cgeradorcaptcha.h"
#include "cconexao.h"

class CApinfo : public CConexao
{
    Q_OBJECT

    Q_PROPERTY(bool processando READ getProcessando NOTIFY processandoChanged)

public:
    explicit CApinfo(QObject *parent = 0);
    ~CApinfo();

    Q_INVOKABLE void Consultar();   
    Q_INVOKABLE void Captcha(const QString &v);
    Q_INVOKABLE void Cancelar();

    CGeradorCaptcha *getCaptchaProvider();
    void setCaptchaProvider(CGeradorCaptcha *captchaProvider);
protected:

private:
    CGeradorCaptcha *_captchaProvider;
    QVariantList _listaX;
    bool _cancelar, _processando;
    QString _urlConsulta, _urlLista, _urlCaptcha;

    void Autenticar();
    void ConsultarTodasVagas(const QString &strRespPrincipal);
    QString DataConsulta(bool retro);
    void CarregarCookies();

    bool getProcessando();

signals:
    /*sinais para o controle do captcha*/
    void imagemCaptcha();
    void enviandoCaptcha();
    void captchaInvalido();
    void captchaValido();    
    /**/

    void textoVagas(const QString &str);
    void semBuffer();
    void dataUltimaAtualizacaoChanged();
    void processandoPagina(int pagina, int total);
    void processando();
    void processandoChanged();
    void tentandoNovamente();
    void aguardeUmMomento();
    void cancelado();
    void inicioProcessamento();
    void fimProcessamento();

private slots:
    void verificarConteudoBinario(const QString &tipo, const QByteArray &resp);
    void verificarConteudoTexto(const QByteArray &resp);
    void consultaComDelay();
    void inicioProcessamentoSlot();
    void fimProcessamentoSlot();
    void canceladoSlot();

public slots:

};

inline CGeradorCaptcha* CApinfo::getCaptchaProvider() { return _captchaProvider; }
inline void CApinfo::setCaptchaProvider(CGeradorCaptcha *captchaProvider) { _captchaProvider = captchaProvider; }
inline bool CApinfo::getProcessando() { return _processando; }

#endif // CAPINFO_H
